package sv.com.bolsaTrabajo.view.bean.managedbeans;

import java.util.Date;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import org.primefaces.context.RequestContext;
import sv.com.bolsaTrabajo.model.dao.DepartamentoFacade;
import sv.com.bolsaTrabajo.model.entities.Departamento;
import sv.com.bolsaTrabajo.view.bean.ManejadorAccion;

/**
 *
 * @author Karina Palacios
 */
@ManagedBean
@SessionScoped
public final class DepartamentoMB extends ManejadorAccion {

    @EJB
    private DepartamentoFacade departamentoFacade;
    private Departamento departamento;
    private List<Departamento> departamentos;

    /**
     * Constructor
     */
    public DepartamentoMB() {
        limpiarDepartamento();
        departamento = new Departamento();
    }

    public void limpiarDepartamento() {
        setDepartamento(new Departamento());
    }

    public List<Departamento> getDepartamentos() {
        departamentos = departamentoFacade.obtenerTodos();
        return departamentos;
    }

    public void guardarEntidad() {
        try {
            System.out.println("====> Ingresando a crear departamento");
            getDepartamento().setFechaMod(new Date());

            if (departamento.getIdDepartamento() == null) {
                departamentoFacade.crear(departamento);
                lanzarMensajeInformacion("Exito", "Departamento guardada correctamente");

            } else {
                departamentoFacade.modificar(departamento);
                lanzarMensajeInformacion("Exito", "Departamento modificada correctamente");

            }
            RequestContext.getCurrentInstance().update("IDFrmDepartamento");
            RequestContext.getCurrentInstance().execute("WVDialogDepartamento.hide();");

        } catch (Exception e) {
            lanzarMensajeError("", "Error al guardar Departamento ", e);
        }
    }

    public void modificarEntidad(Departamento modDepartamento) {
        try {
            this.departamento = modDepartamento;
        } catch (Exception e) {
            lanzarMensajeError("Error al actualizar datos", "No se pueden asignar los valores para Departamento", e);

        }
        RequestContext.getCurrentInstance().update("");
    }

    /**
     * ****************** Getters and Setter ********************
     */
    public DepartamentoFacade getDepartamentoFacade() {
        return departamentoFacade;
    }

    public void setDepartamentoFacade(DepartamentoFacade departamentoFacade) {
        this.departamentoFacade = departamentoFacade;
    }

    public Departamento getDepartamento() {
        return departamento;
    }

    public void setDepartamento(Departamento departamento) {
        this.departamento = departamento;
    }
   
 }
